let ajaxTimes = 0;
let arr = ['user/login','user/code'];
import Notify from '@vant/weapp/notify/notify'

let globalRequestTasks = {};
function cancelRequest(key) {
  const task = globalRequestTasks[key];
  if (task) {
      task.abort(); // 尝试取消请求
      delete globalRequestTasks[key]; // 从存储中移除任务
  }
}

export const getrequset = (parmas,data) => {
  const key = `${parmas}`; // 生成唯一标识，用于区分不同的请求
  const isRepeatRequest = !!globalRequestTasks[key]; // 检查是否重复请求
  console.log(isRepeatRequest);
  // 如果是重复请求，则取消之前的请求
  if (isRepeatRequest) {
      cancelRequest(key);
  }

    // 当有地方调用请求方法的时候，就增加全局变量，用于判断有几个请求了
    ajaxTimes++;
    // 显示加载中loading效果
    wx.showLoading({
        title: "加载中",
        mask: true  //开启蒙版遮罩
    });

    // 基础url
    const baseUrl = "http://localhost:9998/"
    const header={ 
      'content-type': 'application/json', 
      'Authorization': arr.includes(parmas) ?'': wx.getStorageSync("token")
   }

    return new Promise((resolve, reject) => {
        wx.request({
            method:"GET",
            data,
            url: baseUrl + parmas,
            header,
            success: (result) => {
              let message = result.data.message;
              switch(result.data.code){
                case 401: Notify(message); wx.navigateTo({
                  url: '/pages/login/index',
                });
                break;
                case 201 :Notify(message);break;
              }
                // 请求成功，就将成功的数据返回出去
                resolve(result.data)
            },
            fail: (err) => {
             
              Notify(err)
                reject(err)
            },
            // 不管请求成功还是失败，都会触发
            complete: () => {
             
                ajaxTimes--;
                // 此时就可以关闭loading效果了
                if (ajaxTimes === 0) {
                    //  关闭正在等待loading效果
                    wx.hideLoading();
                }
 
            }
        });
 
    })
}
export const postrequset = (parmas,data) => {
  
  // 当有地方调用请求方法的时候，就增加全局变量，用于判断有几个请求了
  ajaxTimes++;
  // 显示加载中loading效果
  wx.showLoading({
      title: "加载中",
      mask: true  //开启蒙版遮罩
  });

  // 基础url
  const baseUrl = "http://localhost:9998/"
  //设置请求头
 
  const header={ 
    'content-type': 'application/json', 
    'Authorization': arr.includes(parmas) ?'' :wx.getStorageSync("token")
 }
  return new Promise((resolve, reject) => {
      wx.request({
          method:"POST",
          data,
          url: baseUrl + parmas,
          header,
          success: (result) => {
            let message = result.data.message;
            switch(result.data.code){
              case 401: 
              Notify(message); 
              wx.navigateTo({
                url: '/pages/login/index',
              });
              // wx.clearStorageSync("token");
              // wx.clearStorageSync("user");
              // wx.clearStorageSync("daily");
              break;
              case 201 :Notify(message);break;
            }
              // 请求成功，就将成功的数据返回出去
              resolve(result.data)
          },
          fail: (err) => {
            console.log(err);
              reject(err)
          },
          // 不管请求成功还是失败，都会触发
          complete: () => {
              /**
               * !loading效果同时被多个请求触发是可以显示一个的，但是关闭loading一旦被第一个请求完成后关闭，后面的请求触发的loading效果就没了
               * !所以，需要通过全局设置一个变量，来监听同时触发了几个请求，当最后一个请求完成后，再关闭loading
               * ?每次结束请求后，就减少全局变量，当为0时，就表示这是最后一个请求了
               */
              ajaxTimes--;
              // 此时就可以关闭loading效果了
              if (ajaxTimes === 0) {
                  //  关闭正在等待loading效果
                  wx.hideLoading();
              }

          }
      });

  })
}